package cz.uhk.max.util;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParseException;
import java.util.Locale;

public class BigDecimalUtils {

	private static DecimalFormat decimalFormat;
	
	static {
		
		DecimalFormatSymbols symbols = new DecimalFormatSymbols();
		symbols.setGroupingSeparator(' ');
		
		decimalFormat = 
			(DecimalFormat) DecimalFormat.getInstance(Locale.getDefault());
		decimalFormat.setGroupingUsed(true);
		decimalFormat.setGroupingSize(3);
		decimalFormat.setMaximumFractionDigits(2);
		decimalFormat.setMinimumFractionDigits(2);
		decimalFormat.setParseBigDecimal(true);	
		decimalFormat.setDecimalFormatSymbols(symbols);
		
	}
	
	
	public static String bigDecimal2String(BigDecimal value) {
		return decimalFormat.format(value);
	}
	
	public static BigDecimal string2BigDecimal(String string) {		
		try {
			return (BigDecimal) decimalFormat.parse(string);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static BigDecimal convertToScale(BigDecimal value, int scale) {
		if (value == null) return null;
		return value.setScale(scale, BigDecimal.ROUND_HALF_UP);
	}
	
}
